package com.lagou.edu.user.api;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lagou.edu.user.api.dto.UserDTO;
import com.lagou.edu.user.api.param.UserQueryParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * TODO
 *
 * @author lm
 * @since 2021/10/15 14:21
 */
@FeignClient(value = "edu-user-boot", path = "/user")
public interface UserRemoteService {
    /**
     * 获取用户基本信息
     *
     * @return 用户基本信息
     */
    @GetMapping("/getAllUsers")
    List<UserDTO> getAllUsers();

    @GetMapping("/getUserById")
    UserDTO getUserById(@RequestParam("userId") Integer userId);

    /**
     * 根据手机号获取用户
     *
     * @param phone 手机号
     * @return 用户
     */
    @GetMapping("/getUserByPhone")
    UserDTO getUserByPhone(@RequestParam("phone") String phone);

    /**
     * 保存用户
     *
     * @param userDTO 用户信息
     * @return 保存的用户信息
     */
    @PostMapping("/saveUser")
    UserDTO saveUser(@RequestBody UserDTO userDTO);

    /**
     * s
     * 更新用户基本信息
     *
     * @param userDTO 用户基本信息
     * @return 更新结果
     */
    @PostMapping("/updateUser")
    Boolean updateUser(@RequestBody UserDTO userDTO);

    /**
     * 更新用户密码
     *
     * @param userId         用户ID
     * @param oldPassword    旧密码
     * @param newPassword    新密码
     * @param configPassword
     * @return 更新结果
     */
    @PostMapping("/updatePassword")
    boolean updatePassword(@RequestParam("userId") Integer userId, @RequestParam("oldPassword") String oldPassword,
                           @RequestParam("newPassword") String newPassword, @RequestParam("configPassword") String configPassword);

    @PostMapping(value = "/getUserPages")
    Page<UserDTO> getUserPages(@RequestBody UserQueryParam userQueryParam);

    /**
     * 判断手机号码是否注册
     *
     * @param phone 手机号
     * @return 注册结果
     */
    @GetMapping("/isRegister")
    boolean isRegister(@RequestParam("phone") String phone);
}
